package com.common.dialog;

import android.content.Context;
import android.graphics.Color;
import android.view.ViewGroup;

import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.bigkoo.pickerview.view.TimePickerView;

import java.util.Calendar;

/**
 * @author wmm
 * 2019-2-13
 * 日期选择框 ios风格和android风格
 */
public class DatePickerDialogUtil {
    private Calendar startDate;
    private Calendar endDate;
    private String cancleStr = "取消";
    private String okStr = "确定";
    private String title = "";
    private int titleColor = Color.BLACK;
    private int canclaColor = Color.BLUE;
    private int okColor = Color.BLUE;
    private static DatePickerDialogUtil datePickerDialogUtil;

    /**
     * 单例模式
     *
     * @return
     */
    public static synchronized DatePickerDialogUtil getInstance() {
        if (datePickerDialogUtil == null) {
            datePickerDialogUtil = new DatePickerDialogUtil();
        }
        return datePickerDialogUtil;
    }

    public void initDatePicker(int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay) {
        startDate = Calendar.getInstance();
        endDate = Calendar.getInstance();
        startDate.set(startYear, startMonth, startDay);
        endDate.set(endYear, endMonth, endDay);
    }

    public TimePickerView showDatePicker(Context context, ViewGroup view,OnTimeSelectListener onTimeSelectListener, boolean isOutSideCancelable, boolean isDialog) {
        TimePickerBuilder build = new TimePickerBuilder(context, onTimeSelectListener);
        build.setType(new boolean[]{true, true, false, false, false, false})// 默认全部显示
                .setCancelText(cancleStr)//取消按钮文字
                .setSubmitText(okStr)//确认按钮文字
                .setTitleSize(20)//标题文字大小
                .setTitleText(title)//标题文字
                .setOutSideCancelable(isOutSideCancelable)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(titleColor)//标题文字颜色
                .setSubmitColor(okColor)//确定按钮文字颜色
                .setCancelColor(canclaColor)//取消按钮文字颜色
                .setTitleBgColor(Color.WHITE)//标题背景颜色 Night mode
                .setBgColor(Color.WHITE)//滚轮背景颜色 Night mode
                .setDate(Calendar.getInstance())
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(isDialog)//是否显示为对话框样式
                .setDecorView(view)
                .build();
        return build.build();
    }
    public TimePickerView showDateTimePicker(Context context, ViewGroup view, OnTimeSelectListener onTimeSelectListener,boolean isOutSideCancelable,boolean isDialog) {
        TimePickerBuilder build = new TimePickerBuilder(context, onTimeSelectListener);
        build.setType(new boolean[]{true, true, true, true, true, true})// 默认全部显示
                .setCancelText(cancleStr)//取消按钮文字
                .setSubmitText(okStr)//确认按钮文字
                .setTitleSize(20)//标题文字大小
                .setTitleText(title)//标题文字
                .setOutSideCancelable(isOutSideCancelable)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(titleColor)//标题文字颜色
                .setSubmitColor(okColor)//确定按钮文字颜色
                .setCancelColor(canclaColor)//取消按钮文字颜色
                .setTitleBgColor(Color.WHITE)//标题背景颜色 Night mode
                .setBgColor(Color.WHITE)//滚轮背景颜色 Night mode
                .setDate(Calendar.getInstance())
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(isDialog)//是否显示为对话框样式
                .setDecorView(view)
                .build();
        return build.build();
    }
    public TimePickerView showTimePicker(Context context, ViewGroup viewGroup,OnTimeSelectListener onTimeSelectListener,boolean isOutSideCancelable,boolean isDialog) {
        TimePickerBuilder build = new TimePickerBuilder(context, onTimeSelectListener);
        build.setType(new boolean[]{false, false, false,true, true, true})// 默认全部显示
                .setCancelText(cancleStr)//取消按钮文字
                .setSubmitText(okStr)//确认按钮文字
                .setTitleSize(20)//标题文字大小
                .setTitleText(title)//标题文字
                .setOutSideCancelable(isOutSideCancelable)//点击屏幕，点在控件外部范围时，是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(titleColor)//标题文字颜色
                .setSubmitColor(okColor)//确定按钮文字颜色
                .setCancelColor(canclaColor)//取消按钮文字颜色
                .setTitleBgColor(Color.WHITE)//标题背景颜色 Night mode
                .setBgColor(Color.WHITE)//滚轮背景颜色 Night mode
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(isDialog)//是否显示为对话框样式
                .setDecorView(viewGroup)
                .build();
        return build.build();
    }
//    public void showCitySelect(Context context, OnOptionsSelectListener listener,String ) {
//        OptionsPickerView pvOptions = new OptionsPickerBuilder(context, listener).setSubmitText(okStr)//确定按钮文字
//                .setCancelText(cancleStr)//取消按钮文字
//                .setTitleText(title)//标题
//                .setSubCalSize(18)//确定和取消文字大小
//                .setTitleSize(20)//标题文字大小
//                .setTitleColor(titleColor)//标题文字颜色
//                .setSubmitColor(okColor)//确定按钮文字颜色
//                .setCancelColor(canclaColor)//取消按钮文字颜色
//                .setTitleBgColor(Color.WHITE)//标题背景颜色 Night mode
//                .setBgColor(Color.WHITE)//滚轮背景颜色 Night mode
//                .setContentTextSize(18)//滚轮文字大小
//                .setLabels("省", "市", "区")//设置选择的三级单位
//                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
//                .setCyclic(false, false, false)//循环与否
//                .setSelectOptions(1, 1, 1)  //设置默认选中项
//                .setOutSideCancelable(false)//点击外部dismiss default true
//                .isDialog(true)//是否显示为对话框样式
//                .isRestoreItem(true)//切换时是否还原，设置默认选中第一项。
//                .build();
//
//        pvOptions.setPicker(options1Items, options2Items, options3Items);//添加数据源
//    }
    public void setCancleStr(String cancleStr) {
        this.cancleStr = cancleStr;
    }

    public void setOkStr(String okStr) {
        this.okStr = okStr;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setTitleColor(int titleColor) {
        this.titleColor = titleColor;
    }

    public void setCanclaColor(int canclaColor) {
        this.canclaColor = canclaColor;
    }

    public void setOkColor(int okColor) {
        this.okColor = okColor;
    }
}
